package stti.util.log;

public class Logger {

	private String nombreClase = "";
	private boolean debug = true;
	private boolean info = true;
	private boolean error = true;
	private boolean fatal = true;
	
	public Logger(Class clase)
	{
		nombreClase = clase.getName();
	}
	
	public static Logger getLogger(Class clase)
	{
		return new Logger(clase);
	}
	
	public boolean isDebugEnabled()
	{
		return debug;
	}
	
	public void debugEnabled(boolean modo)
	{
		debug = modo;
	}
	
	public boolean isInfoEnabled()
	{
		return info;
	}
	
	public void infoEnabled(boolean modo)
	{
		info = modo;
	}
	
	public boolean isErrorEnabled()
	{
		return error;
	}
	
	public void errorEnabled(boolean modo)
	{
		error = modo;
	}
	
	public boolean isFatalEnabled()
	{
		return fatal;
	}
	
	public void fatalEnabled(boolean modo)
	{
		fatal = modo;
	}
	
	private void mensaje(String tipo, String msg)
	{
		System.out.println("["+tipo+"] "+nombreClase+" : "+msg);
	}
	
	public void debug(String msg)
	{
		mensaje("DEBUG",msg);
	}
	
	public void debug(String msg, Exception e)
	{
		mensaje("DEBUG",msg+" "+e.getMessage());
	}
	
	public void info(String msg)
	{
		mensaje("INFO",msg);
	}
	
	public void error(String msg)
	{
		mensaje("ERROR",msg);
	}

	public void error(String msg, Exception e)
	{
		mensaje("ERROR",msg+" "+e.getMessage());
	}

	
	public void fatal(String msg)
	{
		mensaje("FATAL",msg);
	}
	
	public boolean isEnabledFor(Level nivel)
	{
		boolean resultado = false;
		if (nivel == Level.DEBUG)
		{
			resultado = isDebugEnabled();
		}
		if (nivel == Level.INFO)
		{
			resultado = isInfoEnabled();
		}
		if (nivel == Level.ERROR)
		{
			resultado = isErrorEnabled();
		}
		if (nivel == Level.FATAL)
		{
			resultado = isFatalEnabled();
		}
		if (nivel == Level.ALL)
		{
			resultado = isDebugEnabled() | isInfoEnabled() | isErrorEnabled() | isFatalEnabled();
		}
		return resultado;
	}
}
